﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once
#include <cstdint>
#include "NdbDataSchema.h"

namespace gcmp 
{
    /// \brief  长度单位名称
    ///
    /// 两个单位之间的转换系数为10
    SERIALIZABLE_ENUM_CLASS(LengthUnitName)
    {
        UndefinedUnit = -1,            ///< 未定义单位
        Micrometre = 1,                ///< 微米
        Millimeter = 2,                ///< 毫米
        Centimetre = 3,                ///< 厘米
        Decimetre = 4,                 ///< 分米
        Meter = 5,                     ///< 米
        Kilometer = 6,                 ///< 千米
    };

    /// \brief  角度单位名称
    ///
    /// 1弧度约等于57.296度
    SERIALIZABLE_ENUM_CLASS(AngleUnitName)
    {
        UndefinedUnit = -1,           ///< 未定义单位
        Angle = 1,                    ///< 角度
        Radian = 2,                   ///< 弧度
    };

    /// \brief  质量单位名称
    ///
    /// 两个单位之间的转换系数为1000
    SERIALIZABLE_ENUM_CLASS(MassUnitName)
    {
        UndefinedUnit = -1,            ///< 未定义单位
        Milligram = 1,                 ///< 毫克
        Gram = 2,                      ///< 克
        Kilogram = 3,                  ///< 千克
        Ton = 4,                       ///< 吨
    };

    /// \brief  时间单位名称
    ///
    /// 注意：由于整型范围的限制，时间单位枚举值对应的整数没有真实反应单位之间的转换关系，调用的时候需要自行处理
    SERIALIZABLE_ENUM_CLASS(TimeUnitName)
    {
        UndefinedUnit = -1,              ///< 未定义单位
        Millisecond = 1,                 ///< 毫秒
        Second = 2,                      ///< 秒
        Minute = 3,                      ///< 分钟
        Hour = 4,                        ///< 小时
        Day = 5,                         ///< 天
        MonthIncluding28Days = 6,        ///< 28天的月份
        MonthIncluding29Days = 7,        ///< 29天的月份
        MonthIncluding30Days = 8,        ///< 30天的月份
        MonthIncluding31Days = 9,        ///< 31天的月份
        CommonYear = 10,                 ///< 普通年，一年365天
        LeapYear = 11,                   ///< 闰年，一年366天
    };

    /// \brief  电流单位名称
    ///
    /// 两个单位之间的转换系数为1000
    SERIALIZABLE_ENUM_CLASS(CurrentUnitName)
    {
        UndefinedUnit = -1,              ///< 未定义单位
        Microampere = 1,                 ///< 微安
        Milliampere = 2,                 ///< 毫安
        Ampere = 3,                      ///< 安培
        Kiloampere = 4,                  ///< 千安
    };

    /// \brief  温度单位名称
    ///
    /// 注意：温度单位枚举值对应的整数没有真实反应单位之间的转换关系，调用的时候需要自行处理
    SERIALIZABLE_ENUM_CLASS(TemperatureUnitName)
    {
        UndefinedUnit = -1,           ///< 未定义单位
        CelsiusDegree = 1,            ///< 摄氏温标
        FahrenheitDegree = 2,         ///< 华氏温标
        KelvinScale = 3,              ///< 开尔文温标
    };

    /// \brief  发光强度单位名称
    ///
    /// 两个单位之间的转换系数为1000
    SERIALIZABLE_ENUM_CLASS(LuminousIntensityUnitName)
    {
        UndefinedUnit = -1,           ///< 未定义单位
        Millicandela = 1,             ///< 毫坎德拉
        Candela = 2,                  ///< 坎德拉
    };

}
